home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / XINE-1.ZIP / INJECTOR.ZIP / SRC / PARSER.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-18  |  4.2 KB  |  260 lines

  1.  
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <conio.h>
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7.  
  8. #include "parse.h"
  9. #include "external.h"
  10. #include "netool.h"
  11.  
  12. int logging;
  13.  
  14. #define MAXVARS 50
  15.  
  16. char * vars[MAXVARS][2];
  17.  
  18. extern char myetheraddr[6];
  19. extern char volatile toetheraddr[6];
  20. extern char maskipsrc[4];
  21. extern char maskipdst[4];
  22. extern char myipaddr[4];
  23. extern char toipaddr[4];
  24. extern int maskpsrc;
  25. extern int maskpdst;
  26. extern int noother;
  27. extern int masktype;
  28.  
  29. void initparser(void)
  30. {
  31.     int i;
  32.  
  33.     for (i=0;i<MAXVARS;i++) vars[i][0]=NULL;
  34.  
  35.     initexternals();
  36. }
  37.  
  38. int getvari(char * name)
  39. {
  40.     int i;
  41.  
  42.     for (i=0;i<MAXVARS;i++)
  43.     {
  44.         if ( !vars[i][0] ) return i;
  45.         if ( !strcmp(vars[i][0],name) ) return i+MAXVARS;
  46.     }
  47.     return -1;
  48. }
  49.  
  50. void delvar(char * name)
  51. {
  52.     int f=getvari(name);
  53.     vars[f-MAXVARS][1]=NULL;
  54. }
  55.  
  56.  
  57. void setvar(char * name, char * value)
  58. {
  59.     int f=getvari(name);
  60.  
  61.     if (f==-1) return;
  62.  
  63.     if (f>MAXVARS)
  64.     {
  65.         f=f-MAXVARS;
  66.         vars[f][1]=realloc(vars[f][1],strlen(value)+1);
  67.     }
  68.     else
  69.     {
  70.        if (getvar(name)==NULL)
  71.         {
  72.         vars[f][0]=malloc(strlen(name)+1);
  73.         strcpy(vars[f][0],name);
  74.         vars[f][1]=malloc(strlen(value)+1);
  75.         }
  76.        else
  77.         {
  78.         f=getvari(name)-MAXVARS;
  79.         }
  80.     }
  81.     strcpy(vars[f][1],value);
  82. }
  83.  
  84. char * getvar(char * name)
  85. {
  86.     int i=getvari(name);
  87.  
  88.     if ( (i==-1) | (i<MAXVARS) )
  89.         return NULL;
  90.     else
  91.         return vars[i-MAXVARS][1];
  92. }
  93.  
  94. int breakline (char * l, char ** p)
  95. /* returns number of parsed arguments or  -1 for error */
  96. {
  97.     char temp[100];
  98.     char *s=l, *t=temp;
  99.     int i;
  100.  
  101.     for (i=0;i<10;i++)
  102.     {
  103.         while (isspace(*s)) s++;
  104.         if (!*s) return i;
  105.         if (*s=='"')
  106.         {
  107.             s++;
  108.             while ( *s && (*s!='"') ) *(t++)=*(s++);
  109.             if (*s=='"') s++;
  110.         }
  111.         else
  112.             while ( *s && !isspace(*s) ) *(t++)=*(s++);
  113.         *t='\0';
  114.         strcpy(p[i],temp);
  115.         t=temp;
  116.     }
  117.     return i;
  118. }
  119.  
  120. int docmd (char * in)
  121. {
  122.     char *a[10];
  123.     char buff[500];
  124.     int i,t1,t2,t3,t4,t5,t6;
  125.  
  126.  
  127.     for (i=0;i<10;i++)
  128.     {
  129.         a[i]=buff+i*50;
  130.         *a[i]='\0';
  131.     }
  132.     breakline(in,a);
  133.     if (!strcmp(a[0],"quit"))
  134.     {
  135.         return 1;
  136.     }
  137.     else if (!strcmp(a[0],"logon"))
  138.     {
  139.         logging=1;
  140.     }
  141.     else if (!strcmp(a[0],"logoff"))
  142.     {
  143.         logging=0;
  144.     }
  145.     else if (!strcmp(a[0],"onlytcp"))
  146.     {
  147.         masktype=TCPIP;
  148.     }
  149.     else if (!strcmp(a[0],"allpkt"))
  150.     {
  151.         masktype=0;
  152.     }
  153.     else if (!strcmp(a[0],"set"))
  154.     {
  155.         setvar(a[1],a[2]);
  156.     }
  157.     else if (!strcmp(a[0],"unset"))
  158.     {
  159.         delvar(a[1]);
  160.     }
  161.     else if (!strcmp(a[0],"onlyip"))
  162.     {
  163.         noother=1;;
  164.     }
  165.     else if (!strcmp(a[0],"allpack"))
  166.     {
  167.         noother=0;
  168.     }
  169.     else if (!strcmp(a[0],"setmyip"))
  170.     {
  171.         t1=t2=t3=t4=0;
  172.         sscanf(a[1],"%u.%u.%u.%u",&t1,&t2,&t3,&t4);
  173.         myipaddr[0]=t1;
  174.         myipaddr[1]=t2;
  175.         myipaddr[2]=t3;
  176.         myipaddr[3]=t4;
  177.     }
  178.     else if (!strcmp(a[0],"settoip"))
  179.     {
  180.         t1=t2=t3=t4=0;
  181.         sscanf(a[1],"%u.%u.%u.%u",&t1,&t2,&t3,&t4);
  182.         toipaddr[0]=t1;
  183.         toipaddr[1]=t2;
  184.         toipaddr[2]=t3;
  185.         toipaddr[3]=t4;
  186.     }
  187.     else if (!strcmp(a[0],"setmyeth"))
  188.     {
  189.         t1=t2=t3=t4=t5=t6=0;
  190.         sscanf(a[1],"%u:%u:%u:%u:%u:%u",&t1,&t2,&t3,&t4,&t5,&t6);
  191.         myetheraddr[0]=t1;
  192.         myetheraddr[1]=t2;
  193.         myetheraddr[2]=t3;
  194.         myetheraddr[3]=t4;
  195.         myetheraddr[4]=t5;
  196.         myetheraddr[5]=t6;
  197.     }
  198.     else if (!strcmp(a[0],"setethto"))
  199.     {
  200.         t1=t2=t3=t4=t5=t6=0;
  201.         sscanf(a[1],"%u:%u:%u:%u:%u:%u",&t1,&t2,&t3,&t4,&t5,&t6);
  202.         toetheraddr[0]=t1;
  203.         toetheraddr[1]=t2;
  204.         toetheraddr[2]=t3;
  205.         toetheraddr[3]=t4;
  206.         toetheraddr[4]=t5;
  207.         toetheraddr[5]=t6;
  208.     }
  209.     else if (!strcmp(a[0],"show"))
  210.     {
  211.         cprintf("%s has value:%s\n\r",a[1],getvar(a[1]));
  212.     }
  213.     else if (!strcmp(a[0],"maskpsrc"))
  214.     {
  215.         t1=0;
  216.         sscanf(a[1],"%u",&t1);
  217.         maskpsrc=t1;
  218.     }
  219.     else if (!strcmp(a[0],"maskpdst"))
  220.     {
  221.         t1=0;
  222.         sscanf(a[1],"%u",&t1);
  223.         maskpdst=t1;
  224.     }
  225.     else if (!strcmp(a[0],"maskipsrc"))
  226.     {
  227.         t1=t2=t3=t4=0;
  228.         sscanf(a[1],"%u.%u.%u.%u",&t1,&t2,&t3,&t4);
  229.         maskipsrc[0]=t1;
  230.         maskipsrc[1]=t2;
  231.         maskipsrc[2]=t3;
  232.         maskipsrc[3]=t4;
  233.     }
  234.     else if (!strcmp(a[0],"maskipdst"))
  235.     {
  236.         t1=t2=t3=t4=0;
  237.         sscanf(a[1],"%u.%u.%u.%u",&t1,&t2,&t3,&t4);
  238.         maskipdst[0]=t1;
  239.         maskipdst[1]=t2;
  240.         maskipdst[2]=t3;
  241.         maskipdst[3]=t4;
  242.     }
  243.     else if (!strcmp(a[0],"do"))
  244.     {
  245.         if (doext(a[1])) cputs("Function not found!\n\r");
  246.     }
  247.     else
  248.     {
  249.         cprintf("Unknown command:%s\n\r",a[0]);
  250.     }
  251.  
  252.     return 0;
  253. }
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.